Business activities include repetitive routine operations, many of which are coded as computer jobs for automated execution. For example, a computer system is used to manage servers and other electronic devices, with various operations such as bootup and shutdown, data collection and analysis, and maintenance of software. Some of these jobs are executed at regular intervals, while others are called up when a need arises.
A piece of software called a job scheduler may be used to centrally manage a plurality of jobs for their execution on a single computer. The job scheduler accepts registration of multiple job requests and schedules them in an appropriate order so that the jobs will be executed efficiently on a given computer environment. More specifically, the job scheduler coordinates the execution order of registered jobs and determines the date and time of job execution, while ensuring the allocation of computer resources for concurrent jobs.
For example, one proposed method of job scheduling takes into consideration the system load of a computer, as well as the degree of parallelism of jobs in execution. When a new job is registered, this computer checks the current system load, including that of central processing unit (CPU) and disk storage. If the system load exceeds a threshold, the computer holds the new job without executing it immediately. The computer also checks the degree of parallelism (i.e., the number of jobs being executed concurrently) and similarly regulates the execution of new jobs depending thereon. See, for example, Japanese Laid-open Patent Publication No. 2010-186347.
A single job scheduler may be able to centrally control all the jobs on a computer, but that is not the only case. Security software, for example, may contain a dedicated job scheduler to run a virus scan at regular intervals. Operating system (OS) software may also have its own job scheduler to check the release of new program updates on a regular basis. As seen from these examples, a computer executes multiple jobs coordinated by two or more schedulers. When viewed from the standpoint of one particular job scheduler, some jobs are executed under its direct management while the other jobs are not. The present description refers to the former group of jobs as “managed jobs” and the latter non-managed group of jobs as “foreign jobs” when distinguishing them from the scheduler's viewpoint.
The presence of such foreign jobs would pose some uncertainty to the execution of managed jobs because those foreign jobs consume resources of the information processing apparatus on which they run. In other words, the managed jobs could fail to finish in their assigned times due to the consumption of resources by foreign jobs. It is therefore preferable that the job scheduler performs scheduling in consideration of the presence of foreign jobs. For example, a job scheduler may be configured to identify all possible foreign jobs and take all of them into consideration when scheduling managed jobs. This scheduler design, however, would simply increase the load of job scheduling.